package com.molichuxing.gateway.bff.user.services;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.framework.result.ResponseResult;
import com.molichuxing.framework.service.RootService;
import com.molichuxing.gateway.bff.user.entity.request.create.ComplaintCreateVo;
import com.molichuxing.gateway.bff.user.entity.request.create.UserCreateVo;
import com.molichuxing.gateway.bff.user.entity.request.modify.UserModifyVo;
import com.molichuxing.gateway.bff.user.entity.response.*;

import java.util.List;

/**
 * 用户服务接口
 * @author liyg
 * 2019-09-17
 *
 */
public interface UserBffService extends RootService {

	/**
	 * 用户登录接口
	 * @param createVo
	 * @return
	 */
	ResponseResult<UserLoginVo> memberUserLogin(UserCreateVo createVo);
	
	/**
	 * 退出系统
	 * @param token
	 * @param channel
	 * @return
	 */
	Boolean logOut(String token,String channel);
	
	/**
	 * 根据token获取用户信息
	 * @param token
	 * @return
	 */
	UserVo getUserByToken(String token);
	
	/**
	 * 根据openId获取用户信息
	 * @param token
	 * @return
	 */
	UserVo getUserByOpenId(String openId);
	
	/**
	 * 修改用户信息
	 * @param modifyVo
	 * @param token
	 * @return
	 */
	ResponseResult<String> modifyUser(UserModifyVo modifyVo,String token);
	
	/**
	 * 修改用户信息
	 * @param modifyVo
	 * @param token
	 * @return
	 */
	Boolean modifyUserAddress(UserModifyVo modifyVo,String token);

	/**
	 * 查询消息列表
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
    Paged<MessageCenterVo> getMessageCenterPage(Integer pageNum, Integer pageSize) throws Exception;

	/**
	 * 查询用户未读消息数量
	 * @return
	 */
	Integer getUnreadCount() throws Exception;
	
	/**
	 * 获取用户驾驶证信息
	 * @return
	 */
	DrivingLicenseVo getDrivingLicense();
	
	/**
	 * 获取用户投诉信息接口
	 * @return
	 */
	ComplaintVo getComplaintVo();
	
	/**
	 * 提交用户投诉信息
	 * @param createVo
	 * @return
	 */
	Boolean createComplaint(ComplaintCreateVo createVo);
	
	/**
	 * 用户检验（黑名单、是否有生效中订单）
	 * 
	 * @param user
	 * @return
	 * @throws Exception
	 */
	public UserVerifyVo getVerify(UserVo user, String cpu) throws Exception;
	
	/**
	 * 获取微信签名
	 * @return
	 */
	WechatConfigVo getWechatConfig();
	
	/**
	 * 修改用户为下单用户
	 * 
	 * @param userId
	 *            用户id
	 * @return
	 */
	public Boolean modifyOrderUser(Integer userId);


	/**
	 * 根据token判断用户跳转的首页
	 *
	 * @param userId
	 *            用户id
	 * @return
	 */
	public Boolean verifyUserToIndex(Integer userId);


	/**
	 * 根据token获取我的爱车信息
	 *
	 * @param userId
	 *            用户id
	 * @return
	 */
	public List<UserHomeMyCarVo> getHomeMyCar(Integer userId, String channel);

}
